Ext
		.apply(
				Ext.form.VTypes,
				{
						
					// 密码
					password : function(val, field) {// val指这里的文本框值，field指这个文本框组件，大家要明白这个意徿
						if (field.confirmTo) {// confirmTo是我们自定义的配置参数，一般用来保存另外的组件的id便
							var rePassword = Ext.get(field.confirmTo);// 取得confirmTo的那个id的便
							return (val == rePassword.getValue());
						}
						return true;
					},
					'idcard': function(value,field){
			            return /^\d{14}(\d{1}|\d{4}|(\d{3}[xX]))$/.test(value);
			        },
			        'idcardText': '身份证号码输入错误！',
					// 验证小数
					decimal : function(val, field) {
						try {
							var reg = /^0\.[0-9]{0,5}$/;

							if (!reg.test(val))
								return false;
							return true;
						} catch (e) {
							return false;
						}
					},

					decimalText :'输入的数值必须在0到1之间五位小数',
					
					
					// 有逗号分开的可带小数点的数字
					decomma : function(val, field) {
						try {
							var reg = /^((\d*\.\d*|\d*),?)+$/;

							if (!reg.test(val))
								return false;
							return true;
						} catch (e) {
							return false;
						}
					},

					decommaText :'你的输入有误，请重新输入',
					
          //大于零的整数或者小数
					decimalEx1: function(val, field) {
						var r = /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					decimalEx1Text:'只能输入大于0的数字',
					// ip地址
					ip : function(val, field) {
						try {
							if ((/^(':(':25[0-5]|2[0-4][0-9]|[01]'[0-9][0-9]')\.){3}(':25[0-5]|2[0-4][0-9]|[01]'[0-9][0-9]')$/
									.test(val)))
								return true;
							return false;
						} catch (e) {
							return false;
						}
					},
					// 有小数点和正负号和数字
					decimalEx: function(val, field) {
						var r = /^(-?\d+)(\.\d+)?$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					decimalExText:'只能输入数字、小数点与正负号',
					// 允许中文，英文，数字 名称null == val.match(regName) || ||
					// number.test(val) || number.test(val)
					name : function(val, field) {
						var r = /^([\u4e00-\u9fa5]|[a-zA-Z]|[0-9]|[\r\n\\\-\%\(\)])+$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					nameText:'只允许输入中英文,数字',
					nameEx : function(val, field) {
						var r = /^([\u4e00-\u9fa5]|[a-zA-Z]|[0-9]|[\r\n\\\-\/\_\(\)\%\（\）\～\~])+$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					nameExText:'只允许输入中英文,数字',
					//允许输入中英文,数字以及空格
					namek : function(val, field) {
						var r = /^([\u4e00-\u9fa5]|[a-zA-Z]|[0-9]|[\r\\\s\n\\\-\%\(\)])+$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					namekText:'只允许输入中英文,数字,空格',
					
					//允许中文，英文，数字,回车
					enterChar:function(val, field) {
						var r = /^([\u4e00-\u9fa5]|[a-zA-Z]|[0-9]|[\r\n]|)+$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					enterCharText:'只允许输入中英文,数字',
					
					//允许中文，英文，数字,空格
					enChNum:function(val, field) {
						var r = /^([\u4e00-\u9fa5]|[a-zA-Z]|[0-9]|[\ ])+$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					enChNumText:'只允许输入中英文,数字',

					// 之允许输入英文和数字和空格
					enNum : function(val, field) {
						var r = /^([a-zA-Z]|[0-9]|[\ ])+$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					enNumText :'只允许输入英文数字',

					// 之允许输入英文和数字
					enNumbers: function(val, field) {
						var r = /^([a-zA-Z]|[0-9])+$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					enNumbersText:'只允许输入英文数字',
					
					// 年龄
					age : function(_v) {
						if (/^\d+$/.test(_v)) {
							var _age = parseInt(_v);
							if ((_age > 0) && (_age < 200))
								return true;
						}
						return false;
					},
					ageText :"年龄必须在0到200之间",
					ageMask :/[0-9]/i,

					// 固定电话、传真号码、手机号码
					phone : function(v) {
						var r = /(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/;
						return r.test(v);
					},

					// 邮政编码
					zip : function(v) {
						var r = /^[1-9]\d{5}$/;
						return r.test(v);
					},

					// 简体中政
					chinese : function(v) {
						var r = /^[\u0391-\uFFE5]+$/;
						return r.test(v);
					},

					// 非中政
					noChinese : function(v) {
						var r = /^^[\u0391-\uFFE5]+$/;
						return r.test(v);
					},

					// 货币
					currency : function(v) {
						var r = /^\d+(\.\d+)'$/;
						return r.test(v);
					},

					// QQ
					qq : function(v) {
						var r = /^[1-9]\d{4,8}$/;
						return r.test(v);
					},

					// 实数
					realNumber : function(v) {
						var r = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
						return r.test(v);
					},
					realNumberText:'只允许输入实数',

					// 安全密码
					safe : function(v) {
						var r = /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\'\\\/\'\"]*)|.{0,5})$|\s/;
						return !r.test(v);
					},

					// email
					email : function(val) {
						// alert("222");
						return /^([\w]+)(.[\w]+)*@([\w-]+\.){1,2}([A-Za-z]){2,4}$/
								.test(val);
					},

					// url
					url : function(val, field) {
						try {
							if (/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))'\/'/i
									.test(val))
								return true;
							return false;
						} catch (e) {
							return false;
						}
					},

					// 开始日暿
					begindate : function(val, field) {
						try {
							var reg = /(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)/;
							if (reg.test(val))
								return true;
							return false;
						} catch (e) {
							return false;
						}
					},
					begindateText :'输入的日期不正确',

					dateRange : function(val, field) {
						if (field.dateRange) {
							var beginId = field.dateRange.begin;
							this.beginField = Ext.getCmp(beginId);
							var endId = field.dateRange.end;
							this.endField = Ext.getCmp(endId);
							var beginDate = this.beginField.getValue();
							var endDate = this.endField.getValue();
						}
						// alert("begin:"+beginDate+" endDate:"+endDate);
						var reg = /(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)/;
						if (!reg.test(val)) {
							return false;
						}

						if (beginDate <= endDate) {
							return true;
						} else {
							return false;
						}
					},

					// 验证excel文件必须是以.xls结尾
					excelfile:function(val, field) {
						try {
							var fso = new ActiveXObject("Scripting.FileSystemObject"); 
							var reg = /\.xls$/;
							if(reg.test(val) && fso.FileExists(val)){
								return true;
							}
							
						} catch (e) {
							return false;
						}
						return false;
					},
					//排序
					order:function(val){
						var reg = /^[0-9]{0,3}$/;
						return reg.test(val);
					},
					orderText:'排名只能是数字，且小于等于三位',
					
					excelfileText:'请正确选择.xls文件！',
					dateRangeText :'日期格式错误或者与输入的日期小于起始日期',

					// 之允许输僿冿00之间的百分数
					authPercentage : function(val, field) {

						try {
							// alert(val>0 && val <=100);
					reg = /^\d+(\.\d+)'$/;
					if (val > 0 && val <= 10000)
						return true;
					return false;
				} catch (e) {
					return false;
				}
			},
			authPercentageText :'必须是大于0的百分数',

			// 大于0的正整数
					integerNum : function(val, field) {

						try {
							reg = /^[1-9]\d*$/;
							if (reg.test(val))
								return true;
							return false;

						} catch (e) {
							return false;
						}

					},
					integerNumText :'必须大于0的整数！',

					phoneText :'请输入正确的电话或传真号码!<br />格式如：0000-XXXXXXXX',

					mobileText :'请输入正确的移动电话号码!<br />格式如：13XXXXXXXXX',

					zipText :'请输入正确的邮政编码!',

					searchText :'请不要输入非法的搜索字符!',

					chineseText :'您只能在这里输入中文字符!',

					noChineseText :'您不能在这里输入中文字符!',

					currencyText :'请输入货币便<br />格式如：1.00',

					qqText :'请输入合法的QQ号码!',

					doubleText :'请输入实数便可带+/-卿',

					passwordText :'两密码不一致！',

					safeText :'请输入足够安全的字符,包含英文和数字货其他字符!',
					// 大于等于 0的正整数
					integerNumEx : function(val, field) {

						try {
							reg = /^[0-9]\d*$/;
							if (reg.test(val))
								return true;
							return false;

						} catch (e) {
							return false;
						}

					},
					integerNumExText :'必须大于等于0的整数！',
					// 只允许中午,英文
					enCnName : function(val, field) {
						var r = /^([\u4e00-\u9fa5]|[a-zA-Z])+$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					enCnNameText :'只允许输入中文和英文',
					
					//只允许中文，英文，（）_ - #￥$
					dictionary : function(val, field) {
						var r = /^([\u4e00-\u9fa5]|[a-zA-Z]|[(]|[)]|[_]|[-]|[#]|[￥]|[$])+$/;
						if (r.test(val)) {
							return true;
						} else {
							return false;
						}
					},
					dictionaryText :'只允许输入中文,英文包括（,）,_ ,-, #,￥,$'

				});
